﻿using System;
using Business.Entity.Vendas.MovimentacaoCaixa.SubClass.LancamentoInicial;
using Business.Entity.Vendas.MovimentacaoCaixa.SubClass.PagamentoCliente;
using Business.Entity.Vendas.MovimentacaoCaixa.SubClass.RecebimentoVenda;
using Business.Entity.Vendas.MovimentacaoCaixa.SubClass.Sangria;
using NHibernate;

namespace Business.Entity.Vendas.MovimentacaoCaixa
{
    public class MovimentacaoCaixaRepository : RepositoryBase<MovimentacaoCaixa> 
    {
        
        public static bool LancarMovmentacaoPedido(ISession session, Pedido.Pedido pedido)
        {
            Session = session;
            foreach (var pag in pedido.Pagamento)
            {
                // Pega o fator de multiplicação da parcela.
                var fator = pedido.ValorPedido / pag.Valor;
                // Cria o lançamento
                var lanc = new RecebimentoVenda
                {
                    DataMovimento = pedido.DataPedido,
                    
                    Caixa = Utils.Terminal.ConfiguracaoEcf.Caixa,
                    Usuario = Utils.UsuarioAtual,
                    FormaPagamento = pag.FormaPagamento,
                    Historico = "Pagamento do pedido: " + pedido.Id
                        + " parcela: " + pag.Parcela,
                    Valor = pag.Valor
                };

                session.Save(lanc);
            }
            return true;
        }

        public static bool LancarSangria(Decimal valor,String historico)
        {
            
                var lanc = new Sangria
                {
                    DataMovimento = Utils.Configuracao.DiaProcessamento,
                    Caixa = Utils.Terminal.ConfiguracaoEcf.Caixa,
                    Usuario = Utils.UsuarioAtual,
                    Historico = historico,
                    Valor = valor
                };

                Session.Save(lanc);
            
            return true;
        }

        public static bool LancarInicial(Decimal valor)
        {
            var lanc = new LancamentoInicial()
            {
                DataMovimento = Utils.Configuracao.DiaProcessamento,
                Caixa = Utils.Terminal.ConfiguracaoEcf.Caixa,
                Usuario = Utils.UsuarioAtual,
                Historico = "LANCAMENTO INICIAL",
                Valor = valor
            };

            Session.Save(lanc);
            return true;
        }
    }
}
